package com.yuaer.demo.springsparkjobhandlerdemo.executor.processor;

import java.util.HashMap;
import java.util.Map;

/** 工厂类：管理节点类型到处理器的映射 */
public class NodeProcessorFactory {
    // 注册表：键为节点类型，值为对应的处理器实例
    private static final Map<String, NodeProcessor> processorMap = new HashMap<>();

    static {
        // 在静态块中注册已知节点类型的处理器
        processorMap.put("consumer", new ConsumerNodeProcessor());
        processorMap.put("reward", new RewardNodeProcessor());
        processorMap.put("cycle", new CycleNodeProcessor());
        processorMap.put("root", new RootNodeProcessor());
        // 如需扩展更多类型，可在此处继续注册
    }

    /**
     * 手动注册方法（也可改为从配置文件或反射自动加载）
     * @param type 节点类型标识
     * @param processor 对应的处理器实例
     */
//    public static void registerProcessor(String type, NodeProcessor processor) {
//        registry.put(type, processor);
//    }

    /**
     * 根据节点类型获取对应的处理器
     * @param type 节点类型标识
     * @return 对应的 NodeProcessor 实现
     */
    public static NodeProcessor getProcessor(String type) {
        NodeProcessor processor = processorMap.get(type);
        if (processor == null) throw new IllegalArgumentException("Unknown processor type: " + type);
        return processor;
    }
}
